iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
Mobile Development

iOS 工程師要懂的AR 開發,利用ARKit 製作APP系列 第 12

ARKit-讓我們開始偵測表面吧Part 4

  • 分享至 

  • xImage
  •  

OK, 到目前為止,我們產生了一個平面,但我們如何在這平上設置虛擬物件呢?
我們可以藉由觸碰手機螢幕,在這個平面上產生新的node, 我們這裏稱為focus node。那focus node 的位置是怎麼被算出來的呢? 這裡是用一種Ray casting 的方式產生的,也就是一種虛擬射線的概念 , 當手指觸碰的螢幕時,虛擬場景(scence)中就會產生一個虛擬射線朝平面(plane nodes)射去, 兩者的焦點(Intersection)將會被放置一個fucus node

開始製作, 首先我們先產生一個focus point

var focusPoint:CGPoint!
focusPoint = CGPoint(x: view.center.x, y: view.center.y + view.center.y * 0.20)

這個點將會佔據螢幕高的 20%,並且設定在螢幕中心點的下方


再來偵測旋轉

@objc func orientationChanged() {
  focusPoint = CGPoint(x: view.center.x, y: view.center.y + view.center.y * 0.20)
}

這裡用於在裝置方向改變時, focusPoint 的重新設定, 這裡設定相同的參數
接下來我們在通知中心添加一個觀察者

NotificationCenter.default.addObserver(self,
                                       selector: #selector(ViewController.orientationChanged),
                                       name: UIDevice.orientationDidChangeNotification,
                                       object: nil
                                       )

如此ㄧ來,就可以在裝置方向改變時, 改變focus 的位置


上一篇
ARKit-讓我們開始偵測表面吧Part 3
下一篇
ARKit-讓我們開始偵測表面吧Part 5
系列文
iOS 工程師要懂的AR 開發,利用ARKit 製作APP25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言